﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Transactions;
using Chilis.Proveedores.TransferObjects;
using Chilis.Proveedores.DataAccess;

namespace Chilis.Proveedores.Services
{
    public class EvaluacionService
    {
        public string AddEvaluacion(EvaluacionDTO evaluacion)
        {
            using (TransactionScope tx = new TransactionScope())
            {
                var defaultDate = default(DateTime?);
                int codigoEvaluacion = 0;
                int codigoEvaluacionCriterio = 0;

                if (evaluacion.NombreResponsable == null)
                    return "0|Ingresar nombre de responsable";
                if (evaluacion.ApellidoResponsable == null)
                    return "0|Ingresar apellido de responsable";
                if (evaluacion.FechaEvaluacion.Equals(defaultDate))
                    return "0|Ingresar fecha de evaluación";
                if (evaluacion.Criterios == null)
                    return "0|Ingresar al menos un criterio de evaluación";
                if (!evaluacion.Criterios.Any())
                    return "0|Ingresar al menos un criterio de evaluación";

                codigoEvaluacion = EvaluacionDA.AddEvaluacion(evaluacion);

                if (codigoEvaluacion.Equals(0))
                    return "0|Error al registrar evaluación";

                for (int i = 0; i < evaluacion.Criterios.Count(); i++)
                {
                    var criterio = evaluacion.Criterios[i];
                    criterio.IdEvaluacion = codigoEvaluacion;
                    codigoEvaluacionCriterio = EvaluacionCriterioDA.AddEvaluacionCriterio(criterio);
                    if (codigoEvaluacionCriterio.Equals(0))
                        return "0|Error al registrar criterio evaluación";
                }

                tx.Complete();

                return "1|Se guardó la evaluación con código " + codigoEvaluacion.ToString();
            }
        }
    }
}
